//
//  scoreToBonus.m
//  This file is part of D&D Manager
//
//  Created by Matthew Hutton on 01/10/2006.
//
//
//D&D Manager, a D&D Character and battle management program.
//Copyright (C) 2007, Matthew Hutton
//
//This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License along with this program; if not, write to:
//The Free Software Foundation, Inc.,
//51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

#import "ScoreToBonus.h"


@implementation ScoreToBonus
+ (Class)transformedValueClass{
	return [NSNumber class];
}
+ (BOOL)allowsReverseTransformation{
	return NO;   
}
- (id)transformedValue:(id)value{
	int abilityScore;
	int abilityBonus;
    if (value == nil) return nil;
	//attempt to get sensible value from selector.
	if([value respondsToSelector: @selector(intValue)]){
		abilityScore=[value intValue];
	} else {		
        [NSException raise: NSInternalInconsistencyException
                    format: @"ScoreToBonus Value (%@) does not respond to -intValue.", [value class]];		
    }	
	//calculate ability bonus.
    abilityBonus=abilityScore-10;
	if(abilityBonus<0){
		abilityBonus--;
	}
	abilityBonus=abilityBonus/2;
	return [NSNumber numberWithInt:abilityBonus];
}
@end
